package bingfa

import (
	"fmt"
	"sync"
	"time"
)

//不同协程之间的通讯
//1）为全局变量加上互斥锁
//2）使用管道channel来解决

var myMapSecond =make(map[int]int)
//声明一个全局的互斥锁
var lock sync.Mutex
func count2(n int){
	ans:=1
	for i:=1;i<=n;i++{
		ans=ans*i
	}
	lock.Lock()//获取锁，只有获取到锁的才可以进行对map进行操作
	myMapSecond[n]=ans
	lock.Unlock()//操作完毕后立马释放锁
}
func Test5(){
	for i:=0;i<200;i++{
		go count2(i)
	}
	time.Sleep(time.Second*15)
	fmt.Println(myMapSecond)
}
